package com.qf;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;

/**
 * @author 千锋教育
 * @Company http://www.mobiletrain.org/
 * @Version 1.0
 */
public class ShiroDemo {


    public static void main(String[] args) {
        //安全管理器(shiro的核心控制器（大脑）)
        DefaultSecurityManager securityManager = new DefaultSecurityManager();


        IniRealm realm = new IniRealm("classpath:shiro.ini");

        //realm :  提供用户和账号信息（存储在服务器）
        securityManager.setRealm(realm);


        //设置安全管理器对象
        SecurityUtils.setSecurityManager(securityManager);

        //一切对外的接口
        Subject subject = SecurityUtils.getSubject();
        //账号密码：由用户输入账号和密码， 与存储在服务器的账号和密码对比
        //假设用户输入的是账号和密码为： zhangsan   123456
        UsernamePasswordToken token = new UsernamePasswordToken("lisi", "123456");
        //登录操作
        subject.login(token);

        //退出
//        subject.logout();

        //判断是否登录成功
        System.out.println("是否已经认证："+subject.isAuthenticated());
        System.out.println("是否拥有 dev 角色："+subject.hasRole("developer"));
        System.out.println("是否拥有 admin 角色："+subject.hasRole("admin"));
        System.out.println("是否拥有 xx 权限："+subject.isPermitted("sys:user:add"));
        System.out.println("是否拥有 xx 权限："+subject.isPermitted("sys:menu:del"));
    }
}
